home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / GRAHAM / XAAES_S.ZIP / XAAES / KERNAL.SRC < prev    next >
Encoding:
Text File  |  1996-03-31  |  37.6 KB  |  714 lines

  1. Lattice ATARI 680x0 Object Module Disassembler V5.52
  2. Copyright ╜ 1992 Lattice, Inc.  All Rights Reserved.
  3.  
  4.  
  5. Lattice Object File Loader V1.00
  6. 68000 Instruction Set
  7.  
  8. EXTERNAL DEFINITIONS
  9.  
  10. _kernal 0000-00    _setup_k_function_table 027c-00    _op_code_names 0014-01
  11. _Ktable 0000-02    _Kcall_direct 04b0-02    _clients 0708-02
  12.  
  13. SECTION 00 "" 00000594 BYTES
  14. ;   1: /*
  15. ;   2:  * XaAES - XaAES Ain't the AES
  16. ;   3:  *
  17. ;   4:  * A multitasking AES replacement for MiNT
  18. ;   5:  *
  19. ;   6:  */
  20. ;   7: 
  21. ;   8: #include <OSBIND.H>
  22. ;   9: #include <FILESYS.H>
  23. ;  10: #include <MINTBIND.H>
  24. ;  11: 
  25. ;  12: #ifdef __PUREC__
  26. ;  13: #include <sys\types.h>
  27. ;  14: #else
  28. ;  15: #include <sys/types.h>
  29. ;  16: #endif
  30. ;  17: 
  31. ;  18: #include <memory.h>
  32. ;  19: #include "K_DEFS.H"
  33. ;  20: #include "KERNAL.H"
  34. ;  21: #include "XA_GLOBL.H"
  35. ;  22: #include "XA_CODES.H"
  36. ;  23: #include "XA_DEFS.H"
  37. ;  24: #include "APP_MAN.H"
  38. ;  25: #include "APPL_INI.H"
  39. ;  26: #include "APPL_WRT.H"
  40. ;  27: #include "APPLSEAR.H"
  41. ;  28: #include "NEW_CLNT.H"
  42. ;  29: #include "GETINFO.H"
  43. ;  30: #include "EVNT_BTN.H"
  44. ;  31: #include "EVNT_KBD.H"
  45. ;  32: #include "EVNT_MES.H"
  46. ;  33: #include "EVNT_MUL.H"
  47. ;  34: #include "EVNT_TMR.H"
  48. ;  35: #include "MOUSE_CL.H"
  49. ;  36: #include "WIND_FNS.H"
  50. ;  37: #include "GRAF_MOU.H"
  51. ;  38: #include "GRAF_BOX.H"
  52. ;  39: #include "GRAFGROW.H"
  53. ;  40: #include "KEYBOARD.H"
  54. ;  41: #include "RESOURCE.H"
  55. ;  42: #include "OBJC_DRW.H"
  56. ;  43: #include "OBJCEDIT.H"
  57. ;  44: #include "FORMS.H"
  58. ;  45: #include "FRM_ALRT.H"
  59. ;  46: #include "MENUBAR.H"
  60. ;  47: #include "SHELL.H"
  61. ;  48: #include "EXTEND.H"
  62. ;  49: #include "SCRAP.H"
  63. ;  50: #include "op_names.h"
  64. ;  51: 
  65. ;  52: far AESroutine Ktable[300];        /* The main AES kernal command jump table */
  66. ;  53: far short Kcall_direct[300];    /* array of flags to indicate that routines should be direct called */
  67. ;  54: far XA_CLIENT clients[MAX_PID+1];    /* The clients database */
  68. ;  55: 
  69. ;  56: /*
  70. ;  57:     Kernal Message Handler
  71. ;  58: 
  72. ;  59:     This is responsible for accepting requests via the XaAES.cmd pipe and
  73. ;  60:     sending (most) replies via the client's reply pipe.
  74. ;  61:     
  75. ;  62:     We also get keyboard & mouse input data here.
  76. ;  63: */
  77. ;  64: 
  78. ;  65: void kernal(void)
  79. ;  66: {
  80.        | 0000  4e56 ffe0                      link      a6,#$ffe0
  81.        | 0004  48e7 3724                      movem.l   d2-d3/d5-d7/a2/a5,-(a7)
  82. ;  67:     unsigned short cmd;
  83. ;  68:     short rtn=XA_OK;
  84.        | 0008  7000                           moveq     #$00,d0
  85.        | 000a  3d40 fffc                      move.w    d0,$fffc(a6)
  86. ;  69:     AESPB *parms;
  87. ;  70:     MOUSE_DATA mdata;
  88. ;  71:     AESroutine cmd_routine;
  89. ;  72:     short clnt_pid;
  90. ;  73:     short repl=FALSE;
  91.        | 000e  2e00                           move.l    d0,d7
  92. ;  74:     unsigned long input_channels;
  93. ;  75:     short fs_rtn,r;
  94. ;  76: 
  95. ;  77: /* Unlock the semaphores....we're ready to go */
  96. ;  78:     Psemaphore(3,APPL_INIT_SEMAPHORE,0);
  97.        | 0010  42a7                           clr.l     -(a7)
  98.        | 0012  2f3c 5841 3a49                 move.l    #$58413a49,-(a7)
  99.        | 0018  7003                           moveq     #$03,d0
  100.        | 001a  3f00                           move.w    d0,-(a7)
  101.        | 001c  303c 0134                      move.w    #$0134,d0
  102.        | 0020  3f00                           move.w    d0,-(a7)
  103.        | 0022  4e41                           trap      #$01
  104.        | 0024  4fef 000c                      lea       $000c(a7),a7
  105. ;  79:     Psemaphore(3,TRAP_HANDLER_SEMAPHORE,0);
  106.        | 0028  42a7                           clr.l     -(a7)
  107.        | 002a  2f3c 5841 3a48                 move.l    #$58413a48,-(a7)
  108.        | 0030  7003                           moveq     #$03,d0
  109.        | 0032  3f00                           move.w    d0,-(a7)
  110.        | 0034  303c 0134                      move.w    #$0134,d0
  111.        | 0038  3f00                           move.w    d0,-(a7)
  112.        | 003a  4e41                           trap      #$01
  113.        | 003c  4fef 000c                      lea       $000c(a7),a7
  114. ;  80:     Psemaphore(3,WIN_LIST_SEMAPHORE,0);
  115.        | 0040  42a7                           clr.l     -(a7)
  116.        | 0042  2f3c 5841 3a57                 move.l    #$58413a57,-(a7)
  117.        | 0048  7003                           moveq     #$03,d0
  118.        | 004a  3f00                           move.w    d0,-(a7)
  119.        | 004c  303c 0134                      move.w    #$0134,d0
  120.        | 0050  3f00                           move.w    d0,-(a7)
  121.        | 0052  4e41                           trap      #$01
  122.        | 0054  4fef 000c                      lea       $000c(a7),a7
  123. ;  81:     Psemaphore(3,ROOT_SEMAPHORE,0);
  124.        | 0058  42a7                           clr.l     -(a7)
  125.        | 005a  2f3c 5841 3a52                 move.l    #$58413a52,-(a7)
  126.        | 0060  7003                           moveq     #$03,d0
  127.        | 0062  3f00                           move.w    d0,-(a7)
  128.        | 0064  303c 0134                      move.w    #$0134,d0
  129.        | 0068  3f00                           move.w    d0,-(a7)
  130.        | 006a  4e41                           trap      #$01
  131.        | 006c  4fef 000c                      lea       $000c(a7),a7
  132. ;  82:     Psemaphore(3,CLIENTS_SEMAPHORE,0);
  133.        | 0070  42a7                           clr.l     -(a7)
  134.        | 0072  2f3c 5841 3a43                 move.l    #$58413a43,-(a7)
  135.        | 0078  7003                           moveq     #$03,d0
  136.        | 007a  3f00                           move.w    d0,-(a7)
  137.        | 007c  303c 0134                      move.w    #$0134,d0
  138.        | 0080  3f00                           move.w    d0,-(a7)
  139.        | 0082  4e41                           trap      #$01
  140.        | 0084  4fef 000c                      lea       $000c(a7),a7
  141. ;  83:     Psemaphore(3,UPDATE_LOCK,0);
  142.        | 0088  42a7                           clr.l     -(a7)
  143.        | 008a  2f3c 5841 3a55                 move.l    #$58413a55,-(a7)
  144.        | 0090  7003                           moveq     #$03,d0
  145.        | 0092  3f00                           move.w    d0,-(a7)
  146.        | 0094  303c 0134                      move.w    #$0134,d0
  147.        | 0098  3f00                           move.w    d0,-(a7)
  148.        | 009a  4e41                           trap      #$01
  149.        | 009c  4fef 000c                      lea       $000c(a7),a7
  150. ;  84:     Psemaphore(3,MOUSE_LOCK,0);
  151.        | 00a0  42a7                           clr.l     -(a7)
  152.        | 00a2  2f3c 5841 3a4d                 move.l    #$58413a4d,-(a7)
  153.        | 00a8  7003                           moveq     #$03,d0
  154.        | 00aa  3f00                           move.w    d0,-(a7)
  155.        | 00ac  303c 0134                      move.w    #$0134,d0
  156.        | 00b0  3f00                           move.w    d0,-(a7)
  157.        | 00b2  4e41                           trap      #$01
  158.        | 00b4  4fef 000c                      lea       $000c(a7),a7
  159. ;  85:     
  160. ;  86: /* Main kernal loop - this never exits */
  161. ;  87:     do {
  162. ;  88:         input_channels=1L<<KBD_device;                    /* We are waiting on all these channels */
  163.        | 00b8  7001                           moveq     #$01,d0
  164.        | 00ba  2200                           move.l    d0,d1
  165.        | 00bc  242c  0000-XX.2                move.l    _KBD_device(a4),d2
  166.        | 00c0  e5a1                           asl.l     d2,d1
  167.        | 00c2  2d41 ffe4                      move.l    d1,$ffe4(a6)
  168. ;  89:         input_channels|=1L<<AES_in_pipe;
  169.        | 00c6  2400                           move.l    d0,d2
  170.        | 00c8  262c  0000-XX.2                move.l    _AES_in_pipe(a4),d3
  171.        | 00cc  e7a2                           asl.l     d3,d2
  172.        | 00ce  85ae ffe4                      or.l      d2,$ffe4(a6)
  173. ;  90:         input_channels|=1L<<MOUSE_in_pipe;
  174.        | 00d2  222c  0000-XX.2                move.l    _MOUSE_in_pipe(a4),d1
  175.        | 00d6  e3a0                           asl.l     d1,d0
  176.        | 00d8  81ae ffe4                      or.l      d0,$ffe4(a6)
  177. ;  91: 
  178. ;  92:         fs_rtn=Fselect(2000,(long *)&input_channels,NULL,NULL);    /* Block via select() on the console & the */
  179.        | 00dc  7000                           moveq     #$00,d0
  180.        | 00de  2f00                           move.l    d0,-(a7)
  181.        | 00e0  2f00                           move.l    d0,-(a7)
  182.        | 00e2  486e ffe4                      pea       $ffe4(a6)
  183.        | 00e6  323c 07d0                      move.w    #$07d0,d1
  184.        | 00ea  3f01                           move.w    d1,-(a7)
  185.        | 00ec  323c 011d                      move.w    #$011d,d1
  186.        | 00f0  3f01                           move.w    d1,-(a7)
  187.        | 00f2  4e41                           trap      #$01
  188.        | 00f4  4fef 0010                      lea       $0010(a7),a7
  189.        | 00f8  2c00                           move.l    d0,d6
  190. ;  93:                                                         /* AES command pipe. */
  191. ;  94:         
  192. ;  95:         if (!fs_rtn)    /* Timeout - do some housekeeping */
  193.        | 00fa  4a46                           tst.w     d6
  194.        | 00fc  6608                           bne.b     $0106
  195. ;  96:         {
  196. ;  97:         
  197. ;  98:             find_dead_clients();
  198.        | 00fe  4eba  0000-XX.1                jsr       _find_dead_clients(pc)
  199. ;  99:         
  200. ; 100:         }else{
  201.        | 0102  6000 0162                      bra.w     $0266
  202. ; 101:             
  203. ; 102:             if (input_channels&(1L<<KBD_device))        /* Did we get some keyboard input? */
  204.        | 0106  7001                           moveq     #$01,d0
  205.        | 0108  222c  0000-XX.2                move.l    _KBD_device(a4),d1
  206.        | 010c  e3a0                           asl.l     d1,d0
  207.        | 010e  222e ffe4                      move.l    $ffe4(a6),d1
  208.        | 0112  c280                           and.l     d0,d1
  209.        | 0114  6704                           beq.b     $011a
  210. ; 103:             {
  211. ; 104:                 do_keyboard();
  212.        | 0116  4eba  0000-XX.1                jsr       _do_keyboard(pc)
  213. ; 105:             }
  214. ; 106:         
  215. ; 107:             if (input_channels&(1L<<MOUSE_in_pipe))        /* Did we get a mouse message? */
  216.        | 011a  7001                           moveq     #$01,d0
  217.        | 011c  222c  0000-XX.2                move.l    _MOUSE_in_pipe(a4),d1
  218.        | 0120  e3a0                           asl.l     d1,d0
  219.        | 0122  242e ffe4                      move.l    $ffe4(a6),d2
  220.        | 0126  c480                           and.l     d0,d2
  221.        | 0128  671e                           beq.b     $0148
  222. ; 108:             {
  223. ; 109:                 Fread(MOUSE_in_pipe, (long)sizeof(MOUSE_DATA), &mdata);    /* get Mouse data packet */
  224.        | 012a  486e fff0                      pea       $fff0(a6)
  225.        | 012e  4878 0008                      pea       $0008
  226.        | 0132  3f01                           move.w    d1,-(a7)
  227.        | 0134  703f                           moveq     #$3f,d0
  228.        | 0136  3f00                           move.w    d0,-(a7)
  229.        | 0138  4e41                           trap      #$01
  230.        | 013a  4fef 000c                      lea       $000c(a7),a7
  231. ; 110:                 XA_button_event(&mdata);                                /* Call the mouse event handler */
  232.        | 013e  486e fff0                      pea       $fff0(a6)
  233.        | 0142  4eba  0000-XX.1                jsr       _XA_button_event(pc)
  234.        | 0146  584f                           addq.w    #4,a7
  235. ; 111:             }
  236. ; 112:         
  237. ; 113:             if (input_channels&(1L<<AES_in_pipe))        /* Did we get a command message? */
  238.        | 0148  7001                           moveq     #$01,d0
  239.        | 014a  222c  0000-XX.2                move.l    _AES_in_pipe(a4),d1
  240.        | 014e  e3a0                           asl.l     d1,d0
  241.        | 0150  242e ffe4                      move.l    $ffe4(a6),d2
  242.        | 0154  c480                           and.l     d0,d2
  243.        | 0156  6700 010e                      beq.w     $0266
  244. ; 114:             {
  245. ; 115:                 r=Fread(AES_in_pipe, (long)sizeof(short), &clnt_pid);    /* pid of the client sending the command */
  246.        | 015a  486e ffea                      pea       $ffea(a6)
  247.        | 015e  4878 0002                      pea       $0002
  248.        | 0162  3f01                           move.w    d1,-(a7)
  249.        | 0164  703f                           moveq     #$3f,d0
  250.        | 0166  3f00                           move.w    d0,-(a7)
  251.        | 0168  4e41                           trap      #$01
  252.        | 016a  4fef 000c                      lea       $000c(a7),a7
  253.        | 016e  2a00                           move.l    d0,d5
  254. ; 116: 
  255. ; 117: /* Quick check here to get round a bug in MiNT's Fselect when used with pipes (sometimes a pipe may be reported
  256. ; 118:    as having data ready for reading, when in-fact it hasn't). */
  257. ; 119:                 if (r==sizeof(short))
  258.        | 0170  2005                           move.l    d5,d0
  259.        | 0172  48c0                           ext.l     d0
  260.        | 0174  5580                           subq.l    #2,d0
  261.        | 0176  6600 00ee                      bne.w     $0266
  262. ; 120:                 {
  263. ; 121:                     Fread(AES_in_pipe, (long)sizeof(unsigned short),  &cmd);    /* command type */
  264.        | 017a  202c  0000-XX.2                move.l    _AES_in_pipe(a4),d0
  265.        | 017e  486e fffe                      pea       $fffe(a6)
  266.        | 0182  4878 0002                      pea       $0002
  267.        | 0186  3f00                           move.w    d0,-(a7)
  268.        | 0188  723f                           moveq     #$3f,d1
  269.        | 018a  3f01                           move.w    d1,-(a7)
  270.        | 018c  4e41                           trap      #$01
  271.        | 018e  4fef 000c                      lea       $000c(a7),a7
  272. ; 122: 
  273. ; 123:                     Fread(AES_in_pipe, (long)sizeof(AESPB*),  &parms);    /* get a pointer to AES parameter block */
  274.        | 0192  202c  0000-XX.2                move.l    _AES_in_pipe(a4),d0
  275.        | 0196  486e fff8                      pea       $fff8(a6)
  276.        | 019a  4878 0004                      pea       $0004
  277.        | 019e  3f00                           move.w    d0,-(a7)
  278.        | 01a0  723f                           moveq     #$3f,d1
  279.        | 01a2  3f01                           move.w    d1,-(a7)
  280.        | 01a4  4e41                           trap      #$01
  281.        | 01a6  4fef 000c                      lea       $000c(a7),a7
  282. ; 124: 
  283. ; 125: #if GENERATE_DIAGS
  284. ; 126:                     if (parms->contrl[0]<=MAX_NAMED_DIAG)
  285. ; 127:                     {
  286. ; 128:                         if (parms->contrl[0]!=XA_EVNT_MULTI)
  287. ; 129:                             DIAGS(("cmd_pipe: pid=%d, %s [=%d]\n",clnt_pid, op_code_names[parms->contrl[0]],parms->contrl[0]));
  288. ; 130:                     }else
  289. ; 131:                         DIAGS(("cmd_pipe: pid=%d, op-code=%d\n",clnt_pid, parms->contrl[0]));
  290. ; 132: #endif
  291. ; 133: 
  292. ; 134: /* Call AES routine via jump table*/
  293. ; 135:                     if ((parms->contrl[0]>=0)&&(parms->contrl[0]<300))
  294.        | 01aa  226e fff8                      movea.l   $fff8(a6),a1
  295.        | 01ae  2051                           movea.l   (a1),a0
  296.        | 01b0  3010                           move.w    (a0),d0
  297.        | 01b2  4a40                           tst.w     d0
  298.        | 01b4  6b3c                           bmi.b     $01f2
  299.        | 01b6  0c40 012c                      cmpi.w    #$012c,d0
  300.        | 01ba  6c36                           bge.b     $01f2
  301. ; 136:                     {
  302. ; 137:                         cmd_routine=Ktable[parms->contrl[0]];
  303.        | 01bc  3010                           move.w    (a0),d0
  304.        | 01be  48c0                           ext.l     d0
  305.        | 01c0  e580                           asl.l     #2,d0
  306.        | 01c2  41f9  0000 0000-02             lea       02.00000000,a0
  307.        | 01c8  d1c0                           adda.l    d0,a0
  308.        | 01ca  2a50                           movea.l   (a0),a5
  309. ; 138:                         if (cmd_routine!=NULL)        /* Do we support this op-code yet? */
  310.        | 01cc  204d                           movea.l   a5,a0
  311.        | 01ce  2008                           move.l    a0,d0
  312.        | 01d0  6718                           beq.b     $01ea
  313. ; 139:                         {
  314. ; 140:                             repl=(*cmd_routine)(clnt_pid,parms);
  315.        | 01d2  302e ffea                      move.w    $ffea(a6),d0
  316.        | 01d6  48c0                           ext.l     d0
  317.        | 01d8  2f09                           move.l    a1,-(a7)
  318.        | 01da  2f00                           move.l    d0,-(a7)
  319.        | 01dc  4e95                           jsr       (a5)
  320.        | 01de  504f                           addq.w    #8,a7
  321.        | 01e0  2e00                           move.l    d0,d7
  322. ; 141:                             rtn=XA_OK;
  323.        | 01e2  7000                           moveq     #$00,d0
  324.        | 01e4  3d40 fffc                      move.w    d0,$fffc(a6)
  325. ; 142:                         }else{
  326.        | 01e8  600e                           bra.b     $01f8
  327. ; 143:                             DIAGS(("cmd_pipe: pid:%d, Opcode not implemented\n",clnt_pid));
  328. ; 144:                             DIAGS(("          op-code=%d\n",parms->contrl[0]));
  329. ; 145:                             rtn=XA_UNIMPLEMENTED;    /* Unimplemented functions :( */
  330.        | 01ea  3d7c 0001 fffc                 move.w    #$0001,$fffc(a6)
  331. ; 146:                         }
  332. ; 147:                     }else{
  333.        | 01f0  6006                           bra.b     $01f8
  334. ; 148:                         DIAGS(("XaAES: illegal AES opcode=%d\n",parms->contrl[0]));
  335. ; 149:                         rtn=XA_ILLEGAL;                /* Illegal op-code - these may be caused by bugs in the client program */
  336.        | 01f2  3d7c 0002 fffc                 move.w    #$0002,$fffc(a6)
  337. ; 150:                     }
  338. ; 151:         
  339. ; 152: /* If client wants a reply, send it one - standard GEM programs will always do this, 
  340. ; 153:    but XaAES aware programs don't always need to (depends if they are going to use the reply I suppose)
  341. ; 154:    Some op-codes (evnt_multi for instance) will want to leave the client blocked until an event occurs.
  342. ; 155:    I've added some extra blocking modes to support better timeouts..... */
  343. ; 156:                     if ((cmd!=AESCMD_NOREPLY)&&(repl!=XAC_BLOCK))
  344.        | 01f8  302e fffe                      move.w    $fffe(a6),d0
  345.        | 01fc  0c40 00ca                      cmpi.w    #$00ca,d0
  346.        | 0200  6764                           beq.b     $0266
  347.        | 0202  4a47                           tst.w     d7
  348.        | 0204  6760                           beq.b     $0266
  349. ; 157:                     {
  350. ; 158:                         r=repl&0xf;
  351.        | 0206  2a07                           move.l    d7,d5
  352.        | 0208  0245 000f                      andi.w    #$000f,d5
  353. ; 159:                         switch(r)
  354.        | 020c  2005                           move.l    d5,d0
  355.        | 020e  5540                           subq.w    #2,d0
  356.        | 0210  6706                           beq.b     $0218
  357.        | 0212  5340                           subq.w    #1,d0
  358.        | 0214  6716                           beq.b     $022c
  359.        | 0216  6026                           bra.b     $023e
  360. ; 160:                         {
  361. ; 161:                             case XAC_T_TIMEOUT:
  362. ; 162:                                 rtn=XA_T_WAIT|(repl&0xfff0);
  363.        | 0218  2007                           move.l    d7,d0
  364.        | 021a  48c0                           ext.l     d0
  365.        | 021c  0280 0000 fff0                 andi.l    #$0000fff0,d0
  366.        | 0222  0040 0003                      ori.w     #$0003,d0
  367.        | 0226  3d40 fffc                      move.w    d0,$fffc(a6)
  368. ; 163:                                 break;
  369.        | 022a  6012                           bra.b     $023e
  370. ; 164:                             case XAC_M_TIMEOUT:
  371. ; 165:                                 rtn=XA_M_WAIT|(repl&0xfff0);
  372.        | 022c  2007                           move.l    d7,d0
  373.        | 022e  48c0                           ext.l     d0
  374.        | 0230  0280 0000 fff0                 andi.l    #$0000fff0,d0
  375.        | 0236  0040 0004                      ori.w     #$0004,d0
  376.        | 023a  3d40 fffc                      move.w    d0,$fffc(a6)
  377. ; 166:                                 break;
  378. ; 167:                             default:
  379. ; 168:                                 break;
  380. ; 169:                         }
  381. ; 170:                         Fwrite(clients[clnt_pid].clnt_pipe_wr,sizeof(short),&rtn);
  382.        | 023e  302e ffea                      move.w    $ffea(a6),d0
  383.        | 0242  c1fc 00f6                      muls.w    #$00f6,d0
  384.        | 0246  41f9  0000 0708-02             lea       02.00000708,a0
  385.        | 024c  d1c0                           adda.l    d0,a0
  386.        | 024e  2028 0004                      move.l    $0004(a0),d0
  387.        | 0252  486e fffc                      pea       $fffc(a6)
  388.        | 0256  4878 0002                      pea       $0002
  389.        | 025a  3f00                           move.w    d0,-(a7)
  390.        | 025c  7240                           moveq     #$40,d1
  391.        | 025e  3f01                           move.w    d1,-(a7)
  392.        | 0260  4e41                           trap      #$01
  393.        | 0262  4fef 000c                      lea       $000c(a7),a7
  394. ; 171:                     }
  395. ; 172:                 }
  396. ; 173:             }
  397. ; 174:         }
  398. ; 175:         
  399. ; 176:     }while(parms->contrl[0]!=XA_SHUTDOWN);
  400.        | 0266  226e fff8                      movea.l   $fff8(a6),a1
  401.        | 026a  2051                           movea.l   (a1),a0
  402.        | 026c  0c50 00fd                      cmpi.w    #$00fd,(a0)
  403.        | 0270  6600 fe46                      bne.w     $00b8
  404. ; 177: }
  405.        | 0274  4cdf 24ec                      movem.l   (a7)+,d2-d3/d5-d7/a2/a5
  406.        | 0278  4e5e                           unlk      a6
  407.        | 027a  4e75                           rts
  408. ; 178: 
  409. ; 179: /*
  410. ; 180:     Setup the AES kernal jump table
  411. ; 181: */
  412. ; 182: 
  413. ; 183: void setup_k_function_table(void)
  414. ; 184: {
  415.        | 027c  2f07                           move.l    d7,-(a7)
  416. ; 185:     short f;
  417. ; 186:     for(f=0; f<300; f++)
  418.        | 027e  7e00                           moveq     #$00,d7
  419.        | 0280  0c47 012c                      cmpi.w    #$012c,d7
  420.        | 0284  6c24                           bge.b     $02aa
  421. ; 187:     {
  422. ; 188:         Ktable[f]=NULL;
  423.        | 0286  2007                           move.l    d7,d0
  424.        | 0288  48c0                           ext.l     d0
  425.        | 028a  e580                           asl.l     #2,d0
  426.        | 028c  41f9  0000 0000-02             lea       02.00000000,a0
  427.        | 0292  d1c0                           adda.l    d0,a0
  428.        | 0294  4290                           clr.l     (a0)
  429. ; 189:         Kcall_direct[f]=FALSE;
  430.        | 0296  2007                           move.l    d7,d0
  431.        | 0298  48c0                           ext.l     d0
  432.        | 029a  d080                           add.l     d0,d0
  433.        | 029c  41f9  0000 04b0-02             lea       02.000004b0,a0
  434.        | 02a2  d1c0                           adda.l    d0,a0
  435.        | 02a4  4250                           clr.w     (a0)
  436.        | 02a6  5247                           addq.w    #1,d7
  437.        | 02a8  60d6                           bra.b     $0280
  438. ; 190:     }
  439. ; 191: 
  440. ; 192: /* appl_ class functions */
  441. ; 193:     Ktable[XA_APPL_INIT]=NULL;
  442.        | 02aa  91c8                           suba.l    a0,a0
  443.        | 02ac  23c8  0000 0028-02             move.l    a0,02.00000028
  444. ; 194:     Ktable[XA_APPL_EXIT]=NULL;
  445.        | 02b2  23c8  0000 004c-02             move.l    a0,02.0000004c
  446. ; 195:     Ktable[XA_APPL_GETINFO]=&XA_appl_getinfo;
  447.        | 02b8  41fa  0000-XX.1                lea       _XA_appl_getinfo(pc),a0
  448.        | 02bc  23c8  0000 0208-02             move.l    a0,02.00000208
  449. ; 196:     Ktable[XA_APPL_FIND]=&XA_appl_find;
  450.        | 02c2  41fa  0000-XX.1                lea       _XA_appl_find(pc),a0
  451.        | 02c6  23c8  0000 0034-02             move.l    a0,02.00000034
  452. ; 197:     Ktable[XA_APPL_WRITE]=&XA_appl_write;
  453.        | 02cc  41fa  0000-XX.1                lea       _XA_appl_write(pc),a0
  454.        | 02d0  23c8  0000 0030-02             move.l    a0,02.00000030
  455. ; 198:     Ktable[XA_APPL_SEARCH]=&XA_appl_search;
  456.        | 02d6  41fa  0000-XX.1                lea       _XA_appl_search(pc),a0
  457.        | 02da  23c8  0000 0048-02             move.l    a0,02.00000048
  458. ; 199: 
  459. ; 200: /* Form handlers (form_ xxxx) */
  460. ; 201:     Ktable[XA_FORM_ALERT]=&XA_form_alert;
  461.        | 02e0  41fa  0000-XX.1                lea       _XA_form_alert(pc),a0
  462.        | 02e4  23c8  0000 00d0-02             move.l    a0,02.000000d0
  463. ; 202:     Ktable[XA_FORM_ERROR]=&XA_form_error;
  464.        | 02ea  41fa  0000-XX.1                lea       _XA_form_error(pc),a0
  465.        | 02ee  23c8  0000 00d4-02             move.l    a0,02.000000d4
  466. ; 203:     Ktable[XA_FORM_CENTER]=&XA_form_center;
  467.        | 02f4  41fa  0000-XX.1                lea       _XA_form_center(pc),a0
  468.        | 02f8  23c8  0000 00d8-02             move.l    a0,02.000000d8
  469. ; 204:     Ktable[XA_FORM_DIAL]=&XA_form_dial;
  470.        | 02fe  41fa  0000-XX.1                lea       _XA_form_dial(pc),a0
  471.        | 0302  23c8  0000 00cc-02             move.l    a0,02.000000cc
  472. ; 205:     Ktable[XA_FORM_BUTTON]=&XA_form_button;
  473.        | 0308  41fa  0000-XX.1                lea       _XA_form_button(pc),a0
  474.        | 030c  23c8  0000 00e0-02             move.l    a0,02.000000e0
  475. ; 206:     Ktable[XA_FORM_DO]=&XA_form_do;
  476.        | 0312  41fa  0000-XX.1                lea       _XA_form_do(pc),a0
  477.        | 0316  23c8  0000 00c8-02             move.l    a0,02.000000c8
  478. ; 207:     Ktable[XA_FORM_KEYBD]=&XA_form_keybd;
  479.        | 031c  41fa  0000-XX.1                lea       _XA_form_keybd(pc),a0
  480.        | 0320  23c8  0000 00dc-02             move.l    a0,02.000000dc
  481. ; 208: 
  482. ; 209: /* Event handlers (evnt_ xxx) */
  483. ; 210:     Ktable[XA_EVNT_BUTTON]=&XA_evnt_button;
  484.        | 0326  41fa  0000-XX.1                lea       _XA_evnt_button(pc),a0
  485.        | 032a  23c8  0000 0054-02             move.l    a0,02.00000054
  486. ; 211:     Ktable[XA_EVNT_KEYBD]=&XA_evnt_keybd;
  487.        | 0330  41fa  0000-XX.1                lea       _XA_evnt_keybd(pc),a0
  488.        | 0334  23c8  0000 0050-02             move.l    a0,02.00000050
  489. ; 212:     Ktable[XA_EVNT_MESAG]=&XA_evnt_mesag;
  490.        | 033a  41fa  0000-XX.1                lea       _XA_evnt_mesag(pc),a0
  491.        | 033e  23c8  0000 005c-02             move.l    a0,02.0000005c
  492. ; 213:     Ktable[XA_EVNT_MULTI]=&XA_evnt_multi;
  493.        | 0344  41fa  0000-XX.1                lea       _XA_evnt_multi(pc),a0
  494.        | 0348  23c8  0000 0064-02             move.l    a0,02.00000064
  495. ; 214:     Ktable[XA_EVNT_TIMER]=&XA_evnt_timer;
  496.        | 034e  41fa  0000-XX.1                lea       _XA_evnt_timer(pc),a0
  497.        | 0352  23c8  0000 0060-02             move.l    a0,02.00000060
  498. ; 215:     CALL_DIRECT(XA_EVNT_BUTTON);
  499.        | 0358  7001                           moveq     #$01,d0
  500.        | 035a  33c0  0000 04da-02             move.w    d0,02.000004da
  501. ; 216:     CALL_DIRECT(XA_EVNT_KEYBD);
  502.        | 0360  33c0  0000 04d8-02             move.w    d0,02.000004d8
  503. ; 217:     CALL_DIRECT(XA_EVNT_TIMER);
  504.        | 0366  33c0  0000 04e0-02             move.w    d0,02.000004e0
  505. ; 218: 
  506. ; 219: /* graf_ class functions */
  507. ; 220:     Ktable[XA_GRAF_RUBBERBOX]=&XA_graf_rubberbox;
  508.        | 036c  41fa  0000-XX.1                lea       _XA_graf_rubberbox(pc),a0
  509.        | 0370  23c8  0000 0118-02             move.l    a0,02.00000118
  510. ; 221:     Ktable[XA_GRAF_DRAGBOX]=&XA_graf_dragbox;
  511.        | 0376  41fa  0000-XX.1                lea       _XA_graf_dragbox(pc),a0
  512.        | 037a  23c8  0000 011c-02             move.l    a0,02.0000011c
  513. ; 222:     Ktable[XA_GRAF_HANDLE]=&XA_graf_handle;
  514.        | 0380  41fa  0000-XX.1                lea       _XA_graf_handle(pc),a0
  515.        | 0384  23c8  0000 0134-02             move.l    a0,02.00000134
  516. ; 223:     Ktable[XA_GRAF_MOUSE]=&XA_graf_mouse;
  517.        | 038a  41fa  0000-XX.1                lea       _XA_graf_mouse(pc),a0
  518.        | 038e  23c8  0000 0138-02             move.l    a0,02.00000138
  519. ; 224:     Ktable[XA_GRAF_MKSTATE]=&XA_graf_mkstate;
  520.        | 0394  41fa  0000-XX.1                lea       _XA_graf_mkstate(pc),a0
  521.        | 0398  23c8  0000 013c-02             move.l    a0,02.0000013c
  522. ; 225:     Ktable[XA_GRAF_GROWBOX]=&XA_graf_growbox;
  523.        | 039e  41fa  0000-XX.1                lea       _XA_graf_growbox(pc),a0
  524.        | 03a2  23c8  0000 0124-02             move.l    a0,02.00000124
  525. ; 226:     Ktable[XA_GRAF_SHRINKBOX]=&XA_graf_growbox;
  526.        | 03a8  23c8  0000 0128-02             move.l    a0,02.00000128
  527. ; 227:     Ktable[XA_GRAF_MOVEBOX]=&XA_graf_movebox;
  528.        | 03ae  41fa  0000-XX.1                lea       _XA_graf_movebox(pc),a0
  529.        | 03b2  23c8  0000 0120-02             move.l    a0,02.00000120
  530. ; 228:     Ktable[XA_GRAF_WATCHBOX]=&XA_graf_watchbox;
  531.        | 03b8  41fa  0000-XX.1                lea       _XA_graf_watchbox(pc),a0
  532.        | 03bc  23c8  0000 012c-02             move.l    a0,02.0000012c
  533. ; 229:     CALL_DIRECT(XA_GRAF_HANDLE);
  534.        | 03c2  33c0  0000 054a-02             move.w    d0,02.0000054a
  535. ; 230:     CALL_DIRECT(XA_GRAF_MOUSE);
  536.        | 03c8  33c0  0000 054c-02             move.w    d0,02.0000054c
  537. ; 231:     CALL_DIRECT(XA_GRAF_MKSTATE);
  538.        | 03ce  33c0  0000 054e-02             move.w    d0,02.0000054e
  539. ; 232:     CALL_DIRECT(XA_GRAF_MOVEBOX);
  540.        | 03d4  33c0  0000 0540-02             move.w    d0,02.00000540
  541. ; 233:     CALL_DIRECT(XA_GRAF_GROWBOX);
  542.        | 03da  33c0  0000 0542-02             move.w    d0,02.00000542
  543. ; 234:     CALL_DIRECT(XA_GRAF_SHRINKBOX);
  544.        | 03e0  33c0  0000 0544-02             move.w    d0,02.00000544
  545. ; 235: 
  546. ; 236: /* Window Handling (wind_ xxxx) */
  547. ; 237:     Ktable[XA_WIND_CREATE]=&XA_wind_create;
  548.        | 03e6  41fa  0000-XX.1                lea       _XA_wind_create(pc),a0
  549.        | 03ea  23c8  0000 0190-02             move.l    a0,02.00000190
  550. ; 238:     Ktable[XA_WIND_OPEN]=&XA_wind_open;
  551.        | 03f0  41fa  0000-XX.1                lea       _XA_wind_open(pc),a0
  552.        | 03f4  23c8  0000 0194-02             move.l    a0,02.00000194
  553. ; 239:     Ktable[XA_WIND_CLOSE]=&XA_wind_close;
  554.        | 03fa  41fa  0000-XX.1                lea       _XA_wind_close(pc),a0
  555.        | 03fe  23c8  0000 0198-02             move.l    a0,02.00000198
  556. ; 240:     Ktable[XA_WIND_SET]=&XA_wind_set;
  557.        | 0404  41fa  0000-XX.1                lea       _XA_wind_set(pc),a0
  558.        | 0408  23c8  0000 01a4-02             move.l    a0,02.000001a4
  559. ; 241:     Ktable[XA_WIND_GET]=&XA_wind_get;
  560.        | 040e  41fa  0000-XX.1                lea       _XA_wind_get(pc),a0
  561.        | 0412  23c8  0000 01a0-02             move.l    a0,02.000001a0
  562. ; 242:     Ktable[XA_WIND_FIND]=&XA_wind_find;
  563.        | 0418  41fa  0000-XX.1                lea       _XA_wind_find(pc),a0
  564.        | 041c  23c8  0000 01a8-02             move.l    a0,02.000001a8
  565. ; 243:     Ktable[XA_WIND_UPDATE]=&XA_wind_update;
  566.        | 0422  41fa  0000-XX.1                lea       _XA_wind_update(pc),a0
  567.        | 0426  23c8  0000 01ac-02             move.l    a0,02.000001ac
  568. ; 244:     Ktable[XA_WIND_DELETE]=&XA_wind_delete;
  569.        | 042c  41fa  0000-XX.1                lea       _XA_wind_delete(pc),a0
  570.        | 0430  23c8  0000 019c-02             move.l    a0,02.0000019c
  571. ; 245:     Ktable[XA_WIND_NEW]=&XA_wind_new;
  572.        | 0436  41fa  0000-XX.1                lea       _XA_wind_new(pc),a0
  573.        | 043a  23c8  0000 01b4-02             move.l    a0,02.000001b4
  574. ; 246:     Ktable[XA_WIND_CALC]=&XA_wind_calc;
  575.        | 0440  41fa  0000-XX.1                lea       _XA_wind_calc(pc),a0
  576.        | 0444  23c8  0000 01b0-02             move.l    a0,02.000001b0
  577. ; 247:     CALL_DIRECT(XA_WIND_FIND);
  578.        | 044a  33c0  0000 0584-02             move.w    d0,02.00000584
  579. ; 248:     CALL_DIRECT(XA_WIND_GET);
  580.        | 0450  33c0  0000 0580-02             move.w    d0,02.00000580
  581. ; 249:     Kcall_direct[XA_WIND_UPDATE]=TRUE;    /* wind_update must ALWAYS be call direct
  582.        | 0456  33c0  0000 0586-02             move.w    d0,02.00000586
  583. ; 250:                                             as it uses semaphore locking */
  584. ; 251: 
  585. ; 252: /* Object Tree Handling (objc_ xxxx) */
  586. ; 253:     Ktable[XA_OBJC_DRAW]=&XA_objc_draw;
  587.        | 045c  41fa  0000-XX.1                lea       _XA_objc_draw(pc),a0
  588.        | 0460  23c8  0000 00a8-02             move.l    a0,02.000000a8
  589. ; 254:     Ktable[XA_OBJC_FIND]=&XA_objc_find;
  590.        | 0466  41fa  0000-XX.1                lea       _XA_objc_find(pc),a0
  591.        | 046a  23c8  0000 00ac-02             move.l    a0,02.000000ac
  592. ; 255:     Ktable[XA_OBJC_OFFSET]=&XA_objc_offset;
  593.        | 0470  41fa  0000-XX.1                lea       _XA_objc_offset(pc),a0
  594.        | 0474  23c8  0000 00b0-02             move.l    a0,02.000000b0
  595. ; 256:     Ktable[XA_OBJC_CHANGE]=&XA_objc_change;
  596.        | 047a  41fa  0000-XX.1                lea       _XA_objc_change(pc),a0
  597.        | 047e  23c8  0000 00bc-02             move.l    a0,02.000000bc
  598. ; 257:     Ktable[XA_OBJC_EDIT]=&XA_objc_edit;
  599.        | 0484  41fa  0000-XX.1                lea       _XA_objc_edit(pc),a0
  600.        | 0488  23c8  0000 00b8-02             move.l    a0,02.000000b8
  601. ; 258:     CALL_DIRECT(XA_OBJC_DRAW);
  602.        | 048e  33c0  0000 0504-02             move.w    d0,02.00000504
  603. ; 259:     CALL_DIRECT(XA_OBJC_FIND);
  604.        | 0494  33c0  0000 0506-02             move.w    d0,02.00000506
  605. ; 260:     CALL_DIRECT(XA_OBJC_OFFSET);
  606.        | 049a  33c0  0000 0508-02             move.w    d0,02.00000508
  607. ; 261:     CALL_DIRECT(XA_OBJC_CHANGE);
  608.        | 04a0  33c0  0000 050e-02             move.w    d0,02.0000050e
  609. ; 262:     
  610. ; 263: /* Resource Handling */
  611. ; 264:     Ktable[XA_RSRC_LOAD]=&XA_rsrc_load;
  612.        | 04a6  41fa  0000-XX.1                lea       _XA_rsrc_load(pc),a0
  613.        | 04aa  23c8  0000 01b8-02             move.l    a0,02.000001b8
  614. ; 265:     Ktable[XA_RSRC_FREE]=&XA_rsrc_free;
  615.        | 04b0  41fa  0000-XX.1                lea       _XA_rsrc_free(pc),a0
  616.        | 04b4  23c8  0000 01bc-02             move.l    a0,02.000001bc
  617. ; 266:     Ktable[XA_RSRC_GADDR]=&XA_rsrc_gaddr;
  618.        | 04ba  41fa  0000-XX.1                lea       _XA_rsrc_gaddr(pc),a0
  619.        | 04be  23c8  0000 01c0-02             move.l    a0,02.000001c0
  620. ; 267:     Ktable[XA_RSRC_OBFIX]=&XA_rsrc_obfix;
  621.        | 04c4  41fa  0000-XX.1                lea       _XA_rsrc_obfix(pc),a0
  622.        | 04c8  23c8  0000 01c8-02             move.l    a0,02.000001c8
  623. ; 268:     CALL_DIRECT(XA_RSRC_LOAD);
  624.        | 04ce  33c0  0000 058c-02             move.w    d0,02.0000058c
  625. ; 269:     CALL_DIRECT(XA_RSRC_FREE);
  626.        | 04d4  33c0  0000 058e-02             move.w    d0,02.0000058e
  627. ; 270:     CALL_DIRECT(XA_RSRC_GADDR);
  628.        | 04da  33c0  0000 0590-02             move.w    d0,02.00000590
  629. ; 271:     CALL_DIRECT(XA_RSRC_OBFIX);
  630.        | 04e0  33c0  0000 0594-02             move.w    d0,02.00000594
  631. ; 272: 
  632. ; 273: /* Menu Bar Handling */
  633. ; 274:     Ktable[XA_MENU_BAR]=&XA_menu_bar;
  634.        | 04e6  41fa  0000-XX.1                lea       _XA_menu_bar(pc),a0
  635.        | 04ea  23c8  0000 0078-02             move.l    a0,02.00000078
  636. ; 275:     Ktable[XA_MENU_TNORMAL]=&XA_menu_tnormal;
  637.        | 04f0  41fa  0000-XX.1                lea       _XA_menu_tnormal(pc),a0
  638.        | 04f4  23c8  0000 0084-02             move.l    a0,02.00000084
  639. ; 276:     Ktable[XA_MENU_ICHECK]=&XA_menu_icheck;
  640.        | 04fa  41fa  0000-XX.1                lea       _XA_menu_icheck(pc),a0
  641.        | 04fe  23c8  0000 007c-02             move.l    a0,02.0000007c
  642. ; 277:     Ktable[XA_MENU_IENABLE]=&XA_menu_ienable;
  643.        | 0504  41fa  0000-XX.1                lea       _XA_menu_ienable(pc),a0
  644.        | 0508  23c8  0000 0080-02             move.l    a0,02.00000080
  645. ; 278:     Ktable[XA_MENU_TEXT]=&XA_menu_text;
  646.        | 050e  41fa  0000-XX.1                lea       _XA_menu_text(pc),a0
  647.        | 0512  23c8  0000 0088-02             move.l    a0,02.00000088
  648. ; 279:     Ktable[XA_MENU_REGISTER]=&XA_menu_register;
  649.        | 0518  41fa  0000-XX.1                lea       _XA_menu_register(pc),a0
  650.        | 051c  23c8  0000 008c-02             move.l    a0,02.0000008c
  651. ; 280:     CALL_DIRECT(XA_MENU_TNORMAL);
  652.        | 0522  33c0  0000 04f2-02             move.w    d0,02.000004f2
  653. ; 281:     CALL_DIRECT(XA_MENU_ICHECK);
  654.        | 0528  33c0  0000 04ee-02             move.w    d0,02.000004ee
  655. ; 282:     CALL_DIRECT(XA_MENU_IENABLE);
  656.        | 052e  33c0  0000 04f0-02             move.w    d0,02.000004f0
  657. ; 283: 
  658. ; 284: /* Shell  */
  659. ; 285:     Ktable[XA_SHELL_WRITE]=&XA_shell_write;
  660.        | 0534  41fa  0000-XX.1                lea       _XA_shell_write(pc),a0
  661.        | 0538  23c8  0000 01e4-02             move.l    a0,02.000001e4
  662. ; 286:     Ktable[XA_SHELL_READ]=&XA_shell_read;
  663.        | 053e  41fa  0000-XX.1                lea       _XA_shell_read(pc),a0
  664.        | 0542  23c8  0000 01e0-02             move.l    a0,02.000001e0
  665. ; 287:     Ktable[XA_SHELL_FIND]=&XA_shell_find;
  666.        | 0548  41fa  0000-XX.1                lea       _XA_shell_find(pc),a0
  667.        | 054c  23c8  0000 01f0-02             move.l    a0,02.000001f0
  668. ; 288:     Ktable[XA_SHELL_ENVRN]=&XA_shell_envrn;
  669.        | 0552  41fa  0000-XX.1                lea       _XA_shell_envrn(pc),a0
  670.        | 0556  23c8  0000 01f4-02             move.l    a0,02.000001f4
  671. ; 289: 
  672. ; 290: /* Scrap / Clipboard */
  673. ; 291:     Ktable[XA_SCRAP_READ]=&XA_scrap_read;
  674.        | 055c  41fa  0000-XX.1                lea       _XA_scrap_read(pc),a0
  675.        | 0560  23c8  0000 0140-02             move.l    a0,02.00000140
  676. ; 292:     Ktable[XA_SCRAP_WRITE]=&XA_scrap_write;
  677.        | 0566  41fa  0000-XX.1                lea       _XA_scrap_write(pc),a0
  678.        | 056a  23c8  0000 0144-02             move.l    a0,02.00000144
  679. ; 293: 
  680. ; 294: /* XaAES specific AES calls */
  681. ; 295:     Ktable[XA_APPL_PIPE]=&XA_appl_pipe;
  682.        | 0570  41fa  0000-XX.1                lea       _XA_appl_pipe(pc),a0
  683.        | 0574  23c8  0000 0410-02             move.l    a0,02.00000410
  684. ; 296: 
  685. ; 297: /*
  686. ; 298:   XaAES kernal internal messages - applications should NEVER send these to the kernal,
  687. ; 299:    they are used internally to pass crucial info from the client pid trap handler to 
  688. ; 300:    the kernal.
  689. ; 301: */
  690. ; 302:     Ktable[XA_NEW_CLIENT]=&XA_new_client;
  691.        | 057a  41fa  0000-XX.1                lea       _XA_new_client(pc),a0
  692.        | 057e  23c8  0000 03ec-02             move.l    a0,02.000003ec
  693. ; 303:     Ktable[XA_CLIENT_EXIT]=&XA_client_exit;
  694.        | 0584  41fa  0000-XX.1                lea       _XA_client_exit(pc),a0
  695.        | 0588  23c8  0000 03f0-02             move.l    a0,02.000003f0
  696. ; 304: }
  697.        | 058e  2e1f                           move.l    (a7)+,d7
  698.        | 0590  4e75                           rts
  699.  
  700. SECTION 01 "__MERGED" 0000003c BYTES
  701. OFFSETS 0000 THROUGH 0013 CONTAIN ZERO
  702. 0014 00000000-01 01.00000000
  703. 0018 00000002-01 01.00000002
  704. 001c 00000004-01 01.00000004
  705. 0020 00000006-01 01.00000006
  706. 0024 00000008-01 01.00000008
  707. 0028 0000000a-01 01.0000000a
  708. 002c 0000000c-01 01.0000000c
  709. 0030 0000000e-01 01.0000000e
  710. 0034 00000010-01 01.00000010
  711. 0038 00000012-01 01.00000012
  712.  
  713. SECTION 02 "" 0001e878 BYTES
  714.